#include <Arduino.h>
// 定义引脚编号
const int buttonPin = 0;    // 按钮连接的GPIO引脚
const int ledPin = 3;       // LED正极连接的GPIO引脚

// 变量定义
int lastButtonState = HIGH; // 上一次按钮状态，默认为高电平（未按下）
bool ledState = false;      // LED初始状态为关闭
unsigned long lastDebounceTime = 0;  // 上次去抖时间
unsigned long debounceDelay = 50;    // 去抖延迟 (毫秒)

void setup() {
  // 设置引脚模式
  pinMode(buttonPin, INPUT_PULLUP); // 设置为输入并启用内部上拉电阻
  pinMode(ledPin, OUTPUT);          // 设置为输出以控制LED

  // 初始化串行通信用于调试
  Serial.begin(115200);
}

void loop() {
  // 读取当前按钮状态
  int currentButtonState = digitalRead(buttonPin);

  // 检查按钮状态是否改变并且已经过了去抖延迟
  if ((currentButtonState != lastButtonState) && (millis() - lastDebounceTime > debounceDelay)) {
    lastDebounceTime = millis(); // 更新上次去抖时间

    if (currentButtonState == LOW) { // 按钮被按下
      // 切换LED状态
      ledState = !ledState;
      digitalWrite(ledPin, ledState ? HIGH : LOW); // 控制LED亮或灭

      // 打印信息到串口监视器
      Serial.println("Button pressed");
    }
  }

  // 更新上次按钮状态
  lastButtonState = currentButtonState;

  // 如果有其他任务要执行，可以在这里添加代码
}